// 枚举
// 可以定义一些带名字的常量，这样可以 清晰表达意图 或 创建一组有区别的用例
// *注意：
// 枚举的类型只能是 string 或 number
// 定义的名称不能为关键字
enum Direction {
    Up = 1, // 1
    Down, // 2
    Left, // 3
    Right // 4
}
enum Direction2 {
    Up, // 0
    Down = 3, // 3
    Left, // 4
    Right // 5
}
// 如上，我们定义了一个数字枚举， Up使用初始化为 1。 其余的成员会从 1开始自动增长。

enum Days {Sun = 3, Mon = 1, Tue, Wed, Thu, Fri, Sat};
const date: { id: number, name: string, days: Days } = { id: 1, name: '周三', days: Days.Wed }
console.log(Days["Sun"] === 3); // true
console.log(Days["Wed"] === 3); // true
console.log(Days[3] === "Sun"); // false
console.log(Days[3] === "Wed"); // true

// 如果未手动赋值的枚举项与手动赋值的重复了，TypeScript 是不会察觉到这一点的，但建议尽量避免


